import express from 'express';
const router = express.Router();

import fs from 'fs';
import path from 'path';

import upload from '../utils/multerConfig';
import { getRandomInt } from '../utils/tools';
import { config } from '../config';

/**
 * 使用multer中间件的单文件上传
 */
router.post('/upload-single', upload.single('file'), (req, res) => {
  // 处理上传的文件和其他数据
  const { content } = req.body;
  // 获取保存的文件名
  // const fileName = req.file.filename;
  res.send('上传成功');
});

/**
 * 使用multer中间件的多文件上传, 此处限制最多一次上传12张图片,不限制的话,可省略第二个参数
 */
router.post('/upload-multiple', upload.array('files', 12), (req, res) => {
  // 处理上传的文件数组和其他数据
  res.send('文件上传成功!');
});

/**
 * 获取服务器随机一张图片
 */
router.get('/get-random-file', (req, res) => {
  // 获取 uploads 文件夹下的所有文件名,再返回一个随机文件
  const dirents = fs.readdirSync(config.FILE_UPLOAD_PATH, {
    withFileTypes: true,
  });
  let names = dirents.filter((dirent) => dirent.isFile()).map((dirent) => dirent.name);
  let index = getRandomInt(0, names.length);

  const filePath = path.join(config.FILE_UPLOAD_PATH, names[index]);
  fs.readFile(filePath, (err, data) => {
    if (err) {
      res.status(500).send('Error retrieving image');
      return;
    }
    const base64Image = data.toString('base64');
    res.json({ image: `data:image/jpeg;base64,${base64Image}` });
  });
});

/**
 * 下载随机图片
 */
router.get('/download-random-file', (req, res) => {
  // 获取 uploads 文件夹下的所有文件名,再返回一个随机文件
  const dirents = fs.readdirSync(config.FILE_UPLOAD_PATH, {
    withFileTypes: true,
  });
  let names = dirents.filter((dirent) => dirent.isFile()).map((dirent) => dirent.name);
  let index = getRandomInt(0, names.length);

  const filePath = path.join(config.FILE_UPLOAD_PATH, names[index]);
  res.download(filePath); // 这将触发下载操作而不是在浏览器中显示图片
});

// 导出路由器实例
export default router;
